#include "CajaChat.h"
#include "Usuario.h"
CajaChat::CajaChat(Usuario* usuario) {
  this->usuario = usuario;
	this->zonaTexto.set_editable(false);
	this->zonaTexto.set_cursor_visible(false);
	this->venChat.set_shadow_type(Gtk::SHADOW_IN);
	this->venChat.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
	this->venChat.add(this->zonaTexto);
	this->botonEnviar.set_label("Enviar");
	this->botonEnviar.signal_clicked().connect
			(sigc::mem_fun(*this, &CajaChat::enviar_texto));
	this->entradaTexto.signal_activate().connect
			(sigc::mem_fun(*this, &CajaChat::enviar_texto));
	this->pack_end(this->botonEnviar, Gtk::PACK_SHRINK);
	this->pack_end(this->entradaTexto, Gtk::PACK_SHRINK);
	this->pack_end(this->venChat, Gtk::PACK_EXPAND_WIDGET);
}

void CajaChat::enviar_texto() {
	std::string entrada = this->entradaTexto.get_text();
	if (entrada != VACIO) {
	  this->usuario->enviar_texto_chat_al_servidor(entrada);
	  this->entradaTexto.set_text(VACIO);
	}
}
void CajaChat::recibir_texto(std::string texto) {
  gdk_threads_enter();
  texto.append("\n");
  this->zonaTexto.get_buffer()->insert_at_cursor(texto);
  Gtk::Adjustment *adj = this->venChat.get_vadjustment();
  adj->set_value(adj->get_upper());
  gdk_threads_leave();
}

CajaChat::~CajaChat() {}
